set scheme plotplain


***Table A.1***
*summary stats by treatment status
    eststo treatment: quietly estpost summarize sent_down qc602 gender minority cr_1 contructed_problem_corruption contructed_total_problems contructed_local_gov_achievement ///
        vote party_member_2010 constructed_conflict contructed_stranger_trust contructed_cadre_trust contructed_parent_trust ///
        edudegree logincome concern reliability vote_forced future_confidence happiness ///
        if rdsample==1&qc605==1&sent_down==1

    eststo control: quietly estpost summarize sent_down qc602 gender minority cr_1 contructed_problem_corruption contructed_total_problems contructed_local_gov_achievement ///
        vote party_member_2010 constructed_conflict contructed_stranger_trust contructed_cadre_trust contructed_parent_trust ///
        edudegree logincome concern reliability vote_forced future_confidence happiness ///
        if rdsample==1&qc605==1&sent_down==0

    esttab control treatment using $tables/summary_stats_by_treatment.tex, ///
        label replace booktabs width(\linewidth) mlabels("Control" "Treatment") ///
        title("Summary Statistics") ///
        collabels("N" "Mean" "St. dev.") ///
        cells("count mean(fmt(a2)) sd(fmt(a2))") nomtitle nonumber noobs ///
        varlabels(sent_down "Sent-down indicator" qc602 "Graduation year" gender "Male" minority "Ethnic minority" cr_1 "Class background" ///
            contructed_problem_corruption "Corruption" contructed_total_problems "Socioeconomic problems" contructed_local_gov_achievement "Local gov. achievement" ///
            vote "Local elections voting" party_member_2010 "Party membership" constructed_conflict "Conflict" ///
            contructed_stranger_trust "Trust: Strangers" contructed_cadre_trust "Trust: Cadres" contructed_parent_trust "Trust: Parents" ///
            edudegree "Education level" logincome "ln(income)" ///
            concern "Evaluated concern" reliability "Evaluated reliability" vote_forced "Forced voting" future_confidence "Future confidence" happiness "Experienced happiness") ///  
        addnotes("\label{tab: A.1}") 
        

***Table D.1***						 
        *b. 3-year bandwidth 
            rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model511b
            rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model512b
            rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model513b
            esttab model511b model512b model513b using $tables/results_attitudes_narrow.tex, ///
                se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Attitudes (3-year Bandwidth)") ///
                mtitles("Corruption" "Socioeconomic problems" "Local gov. achievement") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(N_h_l N_h_r N, fmt(0 0) layout(`""@/@""' @) ///
                labels(`"Effective obs left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and 3-year bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 1narrow} )

***Table D.2***								
            rdrobust vote qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model521b
            rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model522b
            rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model523b
            esttab model521b model522b model523b using $tables/results_participation_narrow.tex, ///
                style(tex) se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Participation (3-year Bandwidth)") ///
                mtitles("Local elections voting" "Party membership" "Conflict") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(N_h_l N_h_r N, fmt(0 0) layout(`""@/@""' @) ///
                labels(`"Effective obs left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and 3-year bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 2narrow} )

***Table D.3***								
            rdrobust contructed_stranger_trust qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model611b
            rdrobust contructed_cadre_trust qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model612b
            rdrobust contructed_parent_trust qc602 if rdsample==1&qc605==1, h(3) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model613b
            esttab model611b model612b model613b using $tables/mechanisms_trust_narrow.tex, ///
                style(tex) se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Trust (3-year Bandwidth)") ///
                mtitles("Strangers" "Cadres" "Parents") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(N_h_l N_h_r N, fmt(0 0) layout(`""@/@""' @) ///
                labels(`"Effective obs left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and 3-year bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 3narrow} ) 

***Table D.7***								
        *c. quadratic polynomials
            rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model511c
            rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model512c
            rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model513c
            esttab model511c model512c model513c using $tables/results_attitudes_quadratic.tex, ///
                se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Attitudes (Quadratic Polynomials)") ///
                mtitles("Corruption" "Socioeconomic problems" "Local gov. achievement") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use local quadratic regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 1quadratic} )

***Table D.8***		
            rdrobust vote qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model521c
            rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model522c
            rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model523c
            esttab model521c model522c model523c using $tables/results_participation_quadratic.tex, ///
                se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Participation (Quadratic Polynomials)") ///
                mtitles("Local elections voting" "Party membership" "Conflict") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use local quadratic regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 2quadratic} )
                
***Table D.9***		
            rdrobust contructed_stranger_trust qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model611c
            rdrobust contructed_cadre_trust qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model612c
            rdrobust contructed_parent_trust qc602 if rdsample==1&qc605==1, p(2) c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store model613c
            esttab model611c model612c model613c using $tables/mechanisms_trust_quadratic.tex, ///
                style(tex) se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Trust (Quadratic Polynomials)") ///
                mtitles("Strangers" "Cadres" "Parents") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 3quadratic} )

***Table D.10***								
        *binary scale
            rdrobust corruption_binary qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store binary511
            rdrobust problems_binary qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store binary512
            rdrobust localgov_binary qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store binary513
            esttab binary511 binary512 binary513 using $tables/results_attitudes_binary.tex, ///
                style(tex) se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Attitudes (Binary)") ///
                mtitles("Corruption" "Socioeconomic problems" "Local gov. achievement") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: binaryattitudes} )

***Table D.11***								
            rdrobust stranger_trust_binary qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store binary611
            rdrobust cadre_trust_binary qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store binary612
            rdrobust parent_trust_binary qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
                est store binary613
            esttab binary611 binary612 binary613 using $tables/mechanisms_trust_binary.tex, ///
                se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Trust (Binary)") ///
                mtitles("Strangers" "Cadres" "Parents") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: binarytrust} )
						
* qg103acode_a_1 == 32 // Jiangsu
* qg103acode_a_1 == 53 // Yunnan
* qg103acode_a_1 == 65 // Xinjiang Uygur Autonomous Region


*** Table D.16 ***
            rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1 & qg103acode_a_1!= 32 & qg103acode_a_1!= 53 & qg103acode_a_1!=65, c(1978.5) fuzzy(sent_down) covs(gender minority cr_1) vce(cluster qc602)
                est store noprov111
            rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1 & qg103acode_a_1!= 32 & qg103acode_a_1!= 53 & qg103acode_a_1!=65, c(1978.5) fuzzy(sent_down) covs(gender minority cr_1) vce(cluster qc602)
                est store noprov112
            rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1 & qg103acode_a_1!= 32 & qg103acode_a_1!= 53 & qg103acode_a_1!=65, c(1978.5) fuzzy(sent_down) covs(gender minority cr_1) vce(cluster qc602)
                est store noprov113
            esttab noprov111 noprov112 noprov113 using $tables/results_attitudes_noprotestprov.tex, ///
                se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Attitudes") ///
                mtitles("Corruption" "Socioeconomic problems" "Local gov. achievement") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 1nocovs} )

*** Table D.17 ***
            rdrobust vote qc602 if rdsample==1&qc605==1 & qg103acode_a_1!= 32 & qg103acode_a_1!= 53 & qg103acode_a_1!=65, c(1978.5) fuzzy(sent_down) covs(gender minority cr_1) vce(cluster qc602)
                est store noprov121
            rdrobust party_member_2010 qc602 if rdsample==1&qc605==1 & qg103acode_a_1!= 32 & qg103acode_a_1!= 53 & qg103acode_a_1!=65 , c(1978.5) fuzzy(sent_down)  covs(gender minority cr_1) vce(cluster qc602)
                est store noprov122
            rdrobust constructed_conflict qc602 if rdsample==1&qc605==1 & qg103acode_a_1!= 32 & qg103acode_a_1!= 53 & qg103acode_a_1!=65, c(1978.5) fuzzy(sent_down)  covs(gender minority cr_1) vce(cluster qc602)
                est store noprov123
            esttab noprov121 noprov122 noprov123 using $tables/results_participation_noprotestprov.tex, ///
                se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
                title("Effects of Sent-down on Participation") ///
                mtitles("Local elections voting" "Party membership" "Conflict") ///
                varlabels("RD_Estimate" "Sent-down") ///
                cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
                stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
                labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
                nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                        {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                        }} \end{table} \label{tab: 2nocovs} )
						

***Figure E.1***								        
    *density test
        rddensity qc602 if rdsample==1&qc605==1, c(1978.5) p(4) q(4) h(10) plot plot_range(1969 1988) hist_range(1969 1988) hist_n(10 10) ///
        plotl_estype(none) plotr_estype(none) cirl_opt(color(gs13%30)) histl_opt(color(gs13%50)) cirr_opt(color(gs7%30)) histr_opt(color(gs7%50)) ///
            graph_opt(title("Density of the Running Variable") xtitle(Graduation-year) xlabel(1969 (2) 1988) graphregion(color(white)) leg(off)) 
        graph export $figures/manuplation_test.pdf, replace

***Table E.1***										
    *balance checks
        rdrobust gender qc602 if rdsample==1&qc605==1, c(1978.5) vce(cluster qc602)
            est store pret1
        rdrobust minority qc602 if rdsample==1&qc605==1, c(1978.5) vce(cluster qc602)
            est store pret2     
        rdrobust cr_1 qc602 if rdsample==1&qc605==1, c(1978.5) vce(cluster qc602)
            est store pret3 
        esttab pret1 pret2 pret3  using $tables/cfps_pretreatment_covs.tex, ///
            se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
            title("Background Characteristics") ///
            mtitles("Gender" "Ethnic minority" "Family background") ///
            varlabels("RD_Estimate" "Sent-down") ///
            cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
            stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
            labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
            nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                    {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                    }} \end{table} \label{tab: pretreatmentcovs} )


***Table E.2***								
    *placebo outcomes 
        rdrobust altruism qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
            est store placebo1
        rdrobust social_status qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
            est store placebo2
        rdrobust satisfaction_life  qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
            est store placebo3
        rdrobust ever_smoke qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
            est store placebo5
        rdrobust constructed_delay qc602 if rdsample==1&qc605==1, c(1978.5) fuzzy(sent_down) vce(cluster qc602)
            est store placebo6
        esttab placebo1 placebo3 placebo6 using $tables/RD_placebo.tex, ///
            se star(* 0.10 ** 0.05 *** 0.01) label replace collabels(none) booktabs width(\linewidth) ///
            title("Placebo Outcomes") ///
            mtitles("Altruism" "Life satisfaction" "Delay at gov. agency") ///
            varlabels("RD_Estimate" "Sent-down") ///
            cells(b(star fmt(a2)) se(par(( )) fmt(a2))) ///
            stats(h_l N_h_l N_h_r N, fmt(1 0 0) layout(@ `""@/@""' @) ///
            labels(`"Bandwidth"' `"Effective obs. left/right"' `"Observations"')) ///
            nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                    {\footnotesize Note: Standard errors in parentheses are clustered at the graduation-year level. All RD estimations use: local linear regressions, triangular kernels, and MSE-optimal bandwidth on both sides of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                    }} \end{table} \label{tab: placebo} )

***Figure E.2***					
    *alternative cutoffs
        rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, c(1975.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf175
        rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, c(1976.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf176
        rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, c(1977.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf177
        rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, c(1979.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf179
        rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, c(1980.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf180
        rdrobust contructed_problem_corruption qc602 if rdsample==1&qc605==1, c(1981.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf181

        rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, c(1975.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf275
        rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, c(1976.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf276
        rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, c(1977.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf277
        rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, c(1979.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf279
        rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, c(1980.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf280
        rdrobust contructed_total_problems qc602 if rdsample==1&qc605==1, c(1981.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf281

        rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, c(1975.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf375
        rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, c(1976.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf376
        rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, c(1977.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf377
        rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, c(1979.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf379
        rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, c(1980.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf380
        rdrobust contructed_local_gov_achievement qc602 if rdsample==1&qc605==1, c(1981.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf381
			
        
        coefplot cf176 cf177 model511a cf179 cf180 || cf276 cf277 model512a cf279 cf280 || cf376 cf377 model513a cf379 cf380 , ///
            bylabels("Corruption" "Socioeconomic problems" "Local gov. achievement")  ///
            plotlabels("1975" "1976" "1977" "1978" "1979" "1980" "1981" ) ///
            coeflabels(RD_Estimate=`""Coefficients" "with 95% CI""') ///
            xline(0, lcolor(black) lwidth(thin) lpattern(dash))
        graph export $figures/placebo_cutoff_attitudes.pdf, replace

***Figure E.3***
        rdrobust vote qc602 if rdsample==1&qc605==1, c(1975.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf475
        rdrobust vote qc602 if rdsample==1&qc605==1, c(1976.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf476
        rdrobust vote qc602 if rdsample==1&qc605==1, c(1977.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf477
        rdrobust vote qc602 if rdsample==1&qc605==1, c(1979.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf479
        rdrobust vote qc602 if rdsample==1&qc605==1, c(1980.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf480
        rdrobust vote qc602 if rdsample==1&qc605==1, c(1981.5) fuzzy(sent_down)  vce(cluster qc602)
            est store cf481

        rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, c(1975.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf575
        rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, c(1976.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf576
        rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, c(1977.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf577
        rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, c(1979.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf579
        rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, c(1980.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf580
        rdrobust party_member_2010 qc602 if rdsample==1&qc605==1, c(1981.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf581

        rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, c(1975.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf675
        rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, c(1976.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf676
        rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, c(1977.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf677
        rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, c(1979.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf679
        rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, c(1980.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf680
        rdrobust constructed_conflict qc602 if rdsample==1&qc605==1, c(1981.5) fuzzy(sent_down) vce(cluster qc602)
            est store cf681

        coefplot cf476 cf477 model521a cf479 cf480 || cf576 cf577 model522a cf579 cf580 || cf676 cf677 model523a cf679 cf680 , ///
            bylabels("Local elections voting" "Party membership" "Conflict")  ///
            plotlabels("1975" "1976" "1977" "1978" "1979" "1980" "1981") ///
            coeflabels(RD_Estimate=`""Coefficients" "with 95% CI""') ///
            xline(0, lcolor(black) lwidth(thin) lpattern(dash)) 
        graph export $figures/placebo_cutoff_participation.pdf, replace



***Table A.3***
*First stage
    estadd scalar z=e(tau_T_cl), replace: model511a model512a model513a model521a model522a model523a model611a model612a model613a 
    estadd scalar z_se=e(se_tau_T_cl), replace: model511a model512a model513a model521a model522a model523a model611a model612a model613a

    esttab model511a model512a model513a model521a model522a model523a model611a model612a model613a, ///
        stats(z z_se)
            matrix C = r(coefs)
            matrix S = r(stats)
            eststo clear
            local rnames : rownames C
            local models : coleq C
            local models : list uniq models
            local i 0
            foreach name of local rnames {
                local ++i
                local j 0
                capture matrix drop b
                capture matrix drop se
                foreach model of local models {
                    local ++j
                    matrix tmp = C[`i', 2*`j'-1]
                    if tmp[1,1]<. {
                        matrix colnames tmp = `model'
                        matrix b = nullmat(b), tmp
                        matrix tmp[1,1] = C[`i', 2*`j']
                        matrix se = nullmat(se), tmp
                    }
                }
            }

            local snames : rownames S
            local i 0
            foreach name of local snames {
                local ++i
                local j 0
                capture matrix drop b
                foreach model of local models {
                local ++j
                matrix tmp = S[`i', `j']
                matrix colnames tmp = `model'
                    matrix b = nullmat(b), tmp
                }
                ereturn post b
                eststo `name'
            }
        esttab using $tables/first_stage.tex, replace booktabs width(\linewidth) ///
            collabels(none) noobs compress nonumb cells(b (fmt(a2)))  mtitles("Coefficients." "Standard errors.") ///
            varlabels(model511a "Corruption" model512a "Socioeconomic problems" model513a "Local gov. achievement" ///
                model521a "Local elections voting" model522a "Party membership" model523a "Conflict" ///
                model611a "Strangers" model612a "Cadres" model613a "Parents") ///
            title("First-stage Estimates") ///
            nonotes postfoot( \bottomrule \end{tabular*} \caption*{ ///
                    {\footnotesize Note: Treatment status of being sent down is on the left side of the cutoff. \sym{*} \(p<0.1\), \sym{**} \(p<0.05\), \sym{***} \(p<0.01\). ///
                    }} \end{table} \label{tab: 1stage} )
        eststo clear
		
		
***Figure 1***		
graph bar (mean) sent_down if qc602>=1968 & qc602<=1988 & rdsample==1, over(qc602) /*
 */ ytitle(Percentage of Sent-Down Cohorts) xsize(7) 

***Figure 2***	
 /// attitude ///
*corruption*
//left side 
ivreg contructed_problem_corruption gender minority cr_1  (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>=1974 & qc602<=1978, r cluster(qc602)
predict yl_corruption if e(sample)

//right side
ivreg contructed_problem_corruption gender minority cr_1 (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>1978 & qc602<=1983, r cluster(qc602)
predict yr_corruption if e(sample)


egen ml_corruption = mean(yl_corruption), by(qc602)
egen mr_corruption = mean(yr_corruption), by(qc602)


twoway (scatter ml_corruption qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
(scatter mr_corruption qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
         (lfit ml_corruption qc602 if qc602>=1974 & qc602<=1978, lpattern(solid) lcolor(gray))  ///
	     (lfit mr_corruption qc602 if qc602>1978 & qc602<=1983, lpattern(solid) lcolor(gray)) ///
		 (qfit ml_corruption qc602 if qc602>=1974 & qc602<=1978, lpattern(dash) lcolor(gray))  ///
	     (qfit mr_corruption qc602 if qc602>1978 & qc602<=1983, lpattern(dash) lcolor(gray)), ///
	      xline(1978.5, lpattern(solid) lcolor(red))       ///
	      legend(off) xlabel(1974(1) 1983)   ///
		  xtitle(Graduation Year) ///
	      ytitle(Score of Corruption Severity)
		  
***Figure 2 (cont'd)***			  
*social problems 
//left side
ivreg contructed_total_problems qc602 gender minority cr_1 if rdsample==1 & qc605==1 & qc602>=1974 & qc602<=1978, r cluster(qc602)
predict yl_problem if e(sample)
		  
//right side
ivreg contructed_total_problems qc602 gender minority cr_1 if rdsample==1 & qc605==1 & qc602>=1978 & qc602<=1983, r cluster(qc602)
predict yr_problem if e(sample)		  

egen ml_problem = mean(yl_problem), by(qc602)
egen mr_problem = mean(yr_problem), by(qc602)

twoway (scatter ml_problem qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
(scatter mr_problem qc602 if qc602>1978 & qc602<=1983 & rdsample==1) ///
         (lfit ml_problem qc602 if qc602>=1974 & qc602<=1978, lpattern(solid) lcolor(gray) sort)  ///
	     (lfit mr_problem qc602 if qc602>1978 & qc602<=1983, lpattern(solid) lcolor(gray) sort) ///
		 (qfit ml_problem qc602 if qc602>=1974 & qc602<=1978, lpattern(dash) lcolor(gray))  ///
	     (qfit mr_problem qc602 if qc602>1978 & qc602<=1983, lpattern(dash) lcolor(gray)), ///
	      xline(1978.5, lpattern(solid) lcolor(red))       ///
	      legend(off) xlabel(1974(1) 1983)   ///
		  xtitle(Graduation Year) ///
	      ytitle(Score of Social Problem Severity)
		  
***Figure 2 (cont'd)***				  
*local government achievement
//left side
ivreg contructed_local_gov_achievement gender minority cr_1  (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>=1974 & qc602<=1978, r cluster(qc602)
predict yl_gov if e(sample)
predict lse_gov if e(sample), stdp

		  
//right side
ivreg contructed_local_gov_achievement gender minority cr_1 (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>1978 & qc602<=1983, r cluster(qc602)
predict yr_gov if e(sample)	
predict rse_gov if e(sample), stdp


egen ml_gov = mean(yl_gov), by(qc602)
egen mr_gov = mean(yr_gov), by(qc602)

twoway (scatter ml_gov qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
(scatter mr_gov qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
         (lfit ml_gov qc602 if qc602>=1974 & qc602<=1978, lpattern(solid) lcolor(gray) sort)  ///
	     (lfit mr_gov qc602 if qc602>1974 & qc602<=1983, lpattern(solid) lcolor(gray) sort) ///
		 (qfit ml_gov qc602 if qc602>=1974 & qc602<=1978, lpattern(dash) lcolor(gray))  ///
	     (qfit mr_gov qc602 if qc602>1978 & qc602<=1983, lpattern(dash) lcolor(gray)), ///
	      xline(1978.5, lpattern(solid) lcolor(red))       ///
	      legend(off) xlabel(1974(1) 1983)   ///
		  xtitle(Graduation Year) ///
	      ytitle(Score of Local Government Achievement)
		  

***Figure 3***				  
*vote*
ivreg vote gender minority cr_1  (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>=1974 & qc602<=1978, r cluster(qc602)
predict yl_vote if e(sample)
predict lse_vote if e(sample), stdp

		  
//right side
ivreg vote gender minority cr_1 (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>1978 & qc602<=1983, r cluster(qc602)
predict yr_vote if e(sample)	
predict rse_vote if e(sample), stdp


egen ml_vote = mean(yl_vote), by(qc602)
egen mr_vote = mean(yr_vote), by(qc602)

twoway (scatter ml_vote qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
(scatter mr_vote qc602 if qc602>=1974 & qc602<=1986 & rdsample==1) ///
         (lfit ml_vote qc602 if qc602>=1974 & qc602<=1978, lpattern(solid) lcolor(gray) sort)  ///
	     (lfit mr_vote qc602 if qc602>1974 & qc602<=1983, lpattern(solid) lcolor(gray) sort) ///
		 (qfit ml_vote qc602 if qc602>=1974 & qc602<=1978, lpattern(dash) lcolor(gray))  ///
	     (qfit mr_vote qc602 if qc602>1978 & qc602<=1983, lpattern(dash) lcolor(gray)), ///
	      xline(1978.5, lpattern(solid) lcolor(red))       ///
	      legend(off) xlabel(1974(1) 1983)   ///
		  xtitle(Graduation Year) ///
	      ytitle(Vote)

				  
*party membership*
ivreg party_member_2010 gender minority cr_1  (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>=1974 & qc602<=1978, r cluster(qc602)
predict yl_party if e(sample)
predict lse_party if e(sample), stdp

		  
//right side
ivreg party_member_2010 gender minority cr_1 (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>1978 & qc602<=1983, r cluster(qc602)
predict yr_party if e(sample)	
predict rse_party if e(sample), stdp


egen ml_party = mean(yl_party), by(qc602)
egen mr_party = mean(yr_party), by(qc602)

twoway (scatter ml_party qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
(scatter mr_party qc602 if qc602>=1974 & qc602<=1986 & rdsample==1) ///
         (lfit ml_party qc602 if qc602>=1974 & qc602<=1978, lpattern(solid) lcolor(gray) sort)  ///
	     (lfit mr_party qc602 if qc602>1974 & qc602<=1983, lpattern(solid) lcolor(gray) sort) ///
		 (qfit ml_party qc602 if qc602>=1974 & qc602<=1978, lpattern(dash) lcolor(gray))  ///
	     (qfit mr_party qc602 if qc602>1978 & qc602<=1983, lpattern(dash) lcolor(gray)), ///
	      xline(1978.5, lpattern(solid) lcolor(red))       ///
	      legend(off) xlabel(1974(1) 1983)   ///
		  xtitle(Graduation Year) ///
	      ytitle(Party Membership)

*conflict with cadre*
ivreg constructed_conflict gender minority cr_1  (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>=1974 & qc602<=1978, r cluster(qc602)
predict yl_conflict if e(sample)
predict lse_conflict if e(sample), stdp

		  
//right side
ivreg constructed_conflict gender minority cr_1 (sent_down=qc602) if rdsample==1 & qc605==1 & qc602>1978 & qc602<=1983, r cluster(qc602)
predict yr_conflict if e(sample)	
predict rse_conflict if e(sample), stdp


egen ml_conflict = mean(yl_conflict), by(qc602)
egen mr_conflict = mean(yr_conflict), by(qc602)

twoway (scatter ml_conflict qc602 if qc602>=1974 & qc602<=1983 & rdsample==1) ///
(scatter mr_conflict qc602 if qc602>=1974 & qc602<=1986 & rdsample==1) ///
         (lfit ml_conflict qc602 if qc602>=1974 & qc602<=1978, lpattern(solid) lcolor(gray) sort)  ///
	     (lfit mr_conflict qc602 if qc602>1974 & qc602<=1983, lpattern(solid) lcolor(gray) sort) ///
		 (qfit ml_conflict qc602 if qc602>=1974 & qc602<=1978, lpattern(dash) lcolor(gray))  ///
	     (qfit mr_conflict qc602 if qc602>1978 & qc602<=1983, lpattern(dash) lcolor(gray)), ///
	      xline(1978.5, lpattern(solid) lcolor(red))       ///
	      legend(off) xlabel(1974(1) 1983)   ///
		  xtitle(Graduation Year) ///
	      ytitle(Conflict with Local Cadre)
		  

***Figure A.2***					
    *join party age
        recode qa701 (-8=.)
        gen age_joinparty=qa701-qa1y
        hist age_joinparty if rdsample==1 & sent_down==0
        hist age_joinparty if rdsample==1 & sent_down==1
        twoway (histogram age_joinparty if rdsample==1 & sent_down==1, start(15) width(3) color(gs7%50)) ///
               (histogram age_joinparty if rdsample==1 & sent_down==0, start(15) width(3) fcolor(none) lcolor(black)), ///
               legend(order(1 "Sent-down" 2 "Non sent-down" )) xtitle(Age) 
               *title("Age Distribution of Joining the Party") 
        graph export $figures/age_joinparty.pdf, replace

